package com.hiss.basic.model.system.domain;

import com.hiss.basic.starter.mybatis.constant.DataSourceConstant;
import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 系统菜单 domain
 */
@Data
@Table(value = "sys_menu", dataSource = DataSourceConstant.DEFAULT_DATASOURCE)
public class SysMenuDomain implements Serializable {

    private static final long serialVersionUID = 1;

    @Id(keyType = KeyType.Auto)
    private Long id;

    /**
     * 标题
     */
    private String title;

    /**
     * 路由名称
     */
    private String name;

    /**
     * 路由地址
     */
    private String path;

    /**
     * 组件路径
     */
    private String component;

    /**
     * 图标
     */
    private String icon;

    /**
     * 权限标识
     */
    private String authority;

    /**
     * 菜单类型
     *
     * @see com.hiss.basic.model.system.enums.MenuTypeEnum
     */
    private Integer menuType;

    /**
     * 组件类型
     *
     * @see com.hiss.basic.model.system.enums.MenuComponentTypeEnum
     */
    private Integer componentType;

    /**
     * 链接，配合内链 外链使用
     */
    private String link;

    /**
     * 父级 ID
     */
    private Long parentId;

    /**
     * 排序
     */
    private Integer sort;

    /**
     * 启用状态
     *
     * @see com.hiss.basic.starter.core.enums.EnableStatusEnum
     */
    private Integer enableStatus;

    /**
     * 缓存状态
     *
     * @see com.hiss.basic.model.system.enums.MenuCacheStatusEnum
     */
    private Integer cacheStatus;

    /**
     * 隐藏状态
     *
     * @see com.hiss.basic.model.system.enums.MenuHiddenStatusEnum
     */
    private Integer hiddenStatus;

    @Column(onInsertValue = "now()")
    private LocalDateTime createTime;

    @Column(onUpdateValue = "now()")
    private LocalDateTime updateTime;
}
